/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package servlets;
/**
 *
 * @author dvalle
 */
import beans.*;
import java.util.regex.*;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
public class Registrar extends HttpServlet {
 
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        /* En este proyecto; este servlet no recibe ni debe recibir nada por GET,
         * asi que si se lleva a entrar al servelt
         * usando el metodo GET solamente redireccion al index.jsp
         */
        response.sendRedirect("index.jsp");
    }
   
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession respuesta = request.getSession(true);
        PrintWriter out = response.getWriter();
        //Declaro e inicio las variables
        String email = request.getParameter("email");
        String nombre = request.getParameter("nombre");
        String password = request.getParameter("password1");
        String confirm_password = request.getParameter("password2");
        Pattern p = Pattern.compile("^([0-9a-zA-Z]([_.w]*[0-9a-zA-Z])*([0-9a-zA-Z][-w]*[0-9a-zA-Z].)+([a-zA-Z]{2,9}.)+[a-zA-Z]{2,3})$");
        Matcher m = p.matcher(nombre);
        Dao d = new Dao();
        //Comienzo con las validaciones
        /*
         * Podemos hacer un monton de validaciones, por ejemplo:
         * Campos no vacios, direccion de email valida, nombre de usuario y contraseña
         * sin espacios y/o caracteres especiales.
         */
       
        //campos vacios
        if(email.isEmpty() || nombre.isEmpty() || password.isEmpty() || confirm_password.isEmpty()){
            respuesta.setAttribute("error", "Hay campos vacios");
           
        } else {
            //No hay campos vacios, veo que la direccion de email sea válida
            if(m.find()){
                respuesta.setAttribute("error", "La direccion de email no es correcta");
               
            } else {
                    //Ahora verifico si la contraseña 1 y la contraseña 2 son iguales
                    if(password.equals(confirm_password)){
                        try {
                            d.conectar();
                            
                                respuesta.setAttribute("error", d.registerUser(nombre, password, email));
                                                          
                            d.desconectar();
                             
                        } catch (Exception e) { 
                            out.println("Ocurrio la sig exception: " + e); 
                            respuesta.setAttribute("error", e.toString());
                        }
                    } else {
                        respuesta.setAttribute("error", "Las contraseñas no son iguales");
                    }
            }
        }
       
        response.sendRedirect("Registrar.jsp");
       
    }
 
}